package com.InterestingExercises;

import java.util.ArrayList;

public class ArrayList购物车案例 {
    public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("Java入门");
        arrayList.add("宁夏枸杞");
        arrayList.add("黑枸杞");
        arrayList.add("人字拖");
        arrayList.add("特级枸杞");
        arrayList.add("枸杞子");
        arrayList.add("不知道什么枸杞");
        System.out.println("原来购物车中有:" + arrayList);

        String target = "枸杞";
       /* int i;
        for (i = 0; i < arrayList.size(); i++) {//注意这里的arrayList.size()是会随着元素被remove逐渐变小的,如果循环中用get(i),remove(i),会导致漏删相邻的两个枸杞中后一个,且i也并不能到达一开始arrayList.size()的位置,因为长度变短
//            所以要在删除一个元素后i--
            if (arrayList.get(i).contains(target)) {
                System.out.println("\"" + arrayList.get(i) + "\"含有\"" + target + "\"");
                System.out.println("已删除\"" + arrayList.remove(i--) + "\"");
            }
            System.out.println("i = " + i);
        }
        System.out.println("i = " + i);*/

//        或者从后往前遍历arraylist即可避免循环结束条件随着删除不断变化
        int i;
        for (i = arrayList.size() - 1; i >= 0; i--) {
            if (arrayList.get(i).contains(target)) {
                System.out.println("\"" + arrayList.get(i) + "\"    含有\"" + target + "\"");
                System.out.println("已删除\"" + arrayList.remove(i) + "\"");
            }
            System.out.println("i = " + i);
        }

//      或者使用contains方法循环判断是否存在某对象
//        public boolean contains(Object o)
        /*while (arrayList.contains(target)) {//这里target必须与集合中的对象完全一致才会返回true,仅含有"枸杞"部分会返回false
            arrayList.remove(target);
        }*/

        System.out.println("现在购物车中还剩下:" + arrayList);
    }
}
